package com.woniu.his.mms.client;

import com.woniu.his.mms.client.param.AddDosagePram;
import com.woniu.his.mms.client.param.AddDrugPram;
import com.woniu.his.mms.client.param.FindDrugParam;
import com.woniu.his.mms.client.param.UpdateDrugParam;
import com.woniu.his.mms.client.result.DosageResult;
import com.woniu.his.mms.client.result.DrugResult;
import com.woniu.his.mms.client.result.PageDrugResult;
import com.woniu.his.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import javax.validation.Valid;
import java.util.List;

/**
* name是项目名，contextId是client的名字
*/
@FeignClient(contextId = "drugManageClient",name="mms",path="demo")
public interface DrugManageClient {


    /**
     * 添加药品
     *
     * @param param 参数
     * @return {@link Result}
     */
    @PostMapping("/addDrug")
    public Result addDrug(@RequestBody @Valid AddDrugPram param);

    /**
     * 添加剂型
     *
     * @param param 参数
     * @return {@link Result}
     */
    @PostMapping("/addDosage")
    public Result addDosage(@RequestBody @Valid AddDosagePram param);

    /**
     * 查询所有剂型
     *
     * @return {@link Result}<{@link List}<{@link DosageResult}>>
     */
    @GetMapping("/queryAllDosage")
    public Result<List<DosageResult>> queryAllDosage();

    /**
     * 删除药物由ids
     *
     * @param ids id
     * @return {@link Result}
     */
    @GetMapping("/deleteDrugByIds")
    public Result deleteDrugByIds(@RequestParam("ids") List<Long> ids);

    /**
     * 发现药物(模糊查询)
     *
     * @param param 参数
     * @return {@link Result}<{@link PageDrugResult}>
     */
    @PostMapping("/findDurgByCondition")
    public Result<PageDrugResult> findDrug(@RequestBody FindDrugParam param);

    /**
     * 更新药物
     *
     * @param param 参数
     * @return {@link Result}
     */
    @PostMapping("/updateDrug")
    public Result updateDrug(@RequestBody UpdateDrugParam param);

    /**
     * 根据药品id查询
     * @param id
     * @return
     */
    @GetMapping("/queryDrug")
    public Result<DrugResult> queryDrug(@RequestParam("id") Long id);


}
